Get image from webservice with PyQgis
Create a layer with feature on interest area
add the Webservice
select the feature layer (change the style or uncheck the layer, but still select!)
Run the script
change this var to your needs :
- workdir
- scale
- fileName
change your screen view to full screen to get better result
import processing
from PyQt4.QtCore import QTimer
# set workdir export files
workdir = '/Users/R/Desktop/Rouyre/GIS_DATA/Raster/IGN/imagerie/'
#define the scale of screenshoot
scale = 640
count = 0
fileName = "aerial"
feat = []
#timer in millisecond
sleepTime=500
# Select the layer witch is used for the mapCanvas extent (do it by hand)
layer = iface.activeLayer()
#def refresh_layers(self):
# for layer in qgis.utils.iface.mapCanvas().layers():
# layer.triggerRepaint()
def prepareMap(): # Arrange layers
layer.select(count)
#set trigger to zoom automaticaly on select's layers
iface.actionZoomToSelected().trigger()
qgis.utils.iface.mapCanvas().zoomScale(scale)
layer.deselect(count)
QTimer.singleShot(sleepTime, exportMap) # Wait 1/10 second and export the map
def exportMap():
global count # We need this because we'll modify its value
#refresh_layers(layer)
iface.mapCanvas().saveAsImage(workdir + fileName + "_" + str(count) + ".png")
print "Map with layer",count,"exported!"
if count < len(feat)-1:
QTimer.singleShot(sleepTime, prepareMap) # Wait 1/10 second and prepare next map
count += 1
features = processing.features(layer)
for feature in features:
feat.append(feature.id)
layer.select(count)
#set trigger to zoom automaticaly on select's layers
iface.actionZoomToSelected().trigger()
qgis.utils.iface.mapCanvas().zoomScale(scale)
layer.deselect(count)
QTimer.singleShot(sleepTime, prepareMap)
Merging files with Gdal
run gdalinfo to check your install.
The documentation for use gdal on mac : ici
make a virtual file
gdalbuildvrt /Users/R/Desktop/Rouyre/GIS_DATA/Raster/IGN/imagerie/ign_imagerie_rouyre.vrt /Users/R/Desktop/Rouyre/GIS_DATA/Raster/IGN/imagerie/*.png
gdal_translate -of Gtiff -co "COMPRESS=LZW" -co "TFW=YES" -co "BIGTIFF=YES" "/Users/R/Desktop/Rouyre/GIS_DATA/Raster/IGN/imagerie/ign_imagerie_rouyre.vrt" "/Users/R/Desktop/Rouyre/GIS_DATA/Raster/IGN/imagerie/ign_imagerie_rouyre.tiff"
Sample - DOS cmd
Imagery IGN 2015
dir /b C:\Users\Yogis\Dropbox\developpement\lizmap\data\imagery\rouyre-2015\*.jpg > rouyre_2015.txt
set DATA_DIR=C:\Users\Yogis\Dropbox\developpement\lizmap\data\imagery\rouyre-2015\
for /f %a IN (rouyre_2015.txt) do c:/OSGeo4W64\bin\gdalwarp -of GTiff -co tiled=yes -co "TFW=YES" -dstnodata 0 "%DATA_DIR%\%a" "C:\Users\Yogis\Dropbox\developpement\lizmap\data\imagery\rouyre-2015\warp\%a"
c:/OSGeo4W64/bin/gdalbuildvrt C:\Users\Yogis\Dropbox\developpement\lizmap\data\imagery\rouyre-2015\rouyre_jpg.vrt C:\Users\Yogis\Dropbox\developpement\lizmap\data\imagery\rouyre-2015\warp\*.jpg
c:/OSGeo4W64\bin\gdal_translate -of Gtiff -co "COMPRESS=LZW" -co "TFW=YES" -co "BIGTIFF=YES" "C:\Users\Yogis\Dropbox\developpement\lizmap\data\imagery\rouyre-2015\rouyre_jpg.vrt" "C:\Users\Yogis\Dropbox\developpement\lizmap\data\imagery\rouyre-2015\rouyre_2015.tiff"
Cadastre 2015
dir /b C:\Users\Yogis\Documents\GIS_DataBase\cadastre\gouv\Rouyre\*.jpg > rouyre_cadastre.txt
set DATA_DIR=C:\Users\Yogis\Documents\GIS_DataBase\cadastre\gouv\Rouyre\
for /f %a IN (rouyre_cadastre.txt) do c:/OSGeo4W64\bin\gdalwarp -of GTiff -co tiled=yes -co "TFW=YES" -dstnodata 255 "%DATA_DIR%\%a" "C:\Users\Yogis\Documents\GIS_DataBase\cadastre\gouv\Rouyre\warp\%a"
c:/OSGeo4W64/bin/gdalbuildvrt C:\Users\Yogis\Documents\GIS_DataBase\cadastre\gouv\Rouyre\rouyre_jpg.vrt C:\Users\Yogis\Documents\GIS_DataBase\cadastre\gouv\Rouyre\warp\*.jpg
c:/OSGeo4W64\bin\gdal_translate -of Gtiff -co "COMPRESS=LZW" -co "TFW=YES" -co "BIGTIFF=YES" "C:\Users\Yogis\Documents\GIS_DataBase\cadastre\gouv\Rouyre\rouyre_jpg.vrt" "C:\Users\Yogis\Documents\GIS_DataBase\cadastre\gouv\Rouyre\rouyre_cadastre.tiff"